＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝

                        PC-FXGAオーサリングソフトウェア
                    『ＧＭＡＫＥＲ』スタータキット(Ver.1.0)
                           ”ＰＩＯＬＩＢ．Ａ”の解説

                                        日本電気ホームエレクトロニクス株式会社
                                                        １９９５年１１月１０日

＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝

目次

第１章  ＰＩＯライブラリの概要
１．１  ＰＩＯライブラリのファイル構成
１．２  ＰＩＯライブラリのセグメント

第２章  ＰＩＯ関数
２．１  PC-FXGAのデータ送信調査                       pio_sendchk
２．２  PC-FXGAのデータ受信調査                       pio_recvchk
２．３  ファイルへのデータの書き込み                  pio_fwrite
２．４  ファイルからのデータの読み込み                pio_fread
２．５  ファイルの読み込み／書き込み位置の移動        pio_fseek
２．６  ファイルのオープン                            pio_fopen
２．７  ファイルのクローズ                            pio_fclose
２．８  文字の画面表示                                pio_putchar
２．９  文字列の画面表示                              pio_putstr
２．10  キー入力                                      pio_getchar
２．11  ホストマシンで発生したエラーコードの取得      pio_geterror

＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝

第１章  ＰＩＯライブラリの概要

ＰＩＯライブラリとは、ホストマシンとPC-FXGA間をパラレルＩ／Ｏを介したインターフ
ェイスを行なうためのライブラリです。

ＰＩＯライブラリを使用するには、デバッガ（FXDB.EXE）が動作している環境を必要と
します。デバッガが動作していないときは使用することができません。

このライブラリでは下記の４点についてサポートしています。

１）PC-FXGA上のユーザープログラムからホストマシン上のMS-DOSファイルのアクセス
２）PC-FXGA上のユーザープログラムでホストマシンに接続されたキーボードの入力
３）PC-FXGA上のユーザープログラムからホストマシンの画面への文字出力
４）ホストマシンで発生したエラーコードの所得


■１．１  ＰＩＯライブラリのファイル構成

PIOLIB.A - ＰＩＯライブラリ
PIO.H    - ヘッダファイル（関数や定数を宣言）


■１．２  ＰＩＯライブラリのセグメント

ＰＩＯライブラリは、以下のセグメントに配置されます。

  属性            セグメント名称
  コード部        pio_code
  データ部        無し
  ＢＳＳ部        無し
  ゼロページ部    無し

＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝

第２章  ＰＩＯ関数

■２．１  PC-FXGAのデータ送信調査

《名称》
pio_sendchk

《形式》
#include <pio.h>
int pio_sendchk(void);

《パラメータ》
パラメータはありません。

《解説》
PC-FXGAからホストマシンへデータが送信できるかどうかを調査し、他のＰＩＯ関数が使
用可能かどうかを返します。
データ送信できない状態の場合、pio_sendchk() 、pio_recvchk() 以外のＰＩＯ関数は
使えません。
データ送信できない状態のままでＰＩＯ関数を呼び出すと、データ送信が可能な状態に
なるまで、関数から復帰しません。

《戻り値》
０が返された場合、PC-FXGAからホストマシンへデータ送信が可能です。
０以外が返された場合、PC-FXGAからホストマシンへデータ送信はできません。データ送
信できない状態の場合、pio_sendchk() 、pio_recvchk() 以外のＰＩＯ関数は使えませ
ん。


■２．２  PC-FXGAのデータ受信調査

《名称》
pio_recvchk

《形式》
#include <pio.h>
int pio_recvchk(void);

《パラメータ》
パラメータはありません。

《解説》
PC-FXGAにホストマシンからデータが送られて来ているかどうかを調査し、PC-FXGAが受
けとるべきデータがあるかどうかを返します。
受けとるべきデータがある場合、pio_recvchk() 以外のＰＩＯ関数は使えません。
受けとるべきデータがある状態のままでＰＩＯ関数を呼び出すとPC-FXGAとホストマシン
の双方でデータ送信を要求する事になり、どちらも受信応答できなくなる為、関数から
復帰できなくなってしまいます。

《戻り値》
０が返された場合、ホストマシンからデータは送られてきていません。
０以外が返された場合、ホストマシンからデータが送られてきています。この場合、ホ
ストマシン側ではデータを送信しようとしている為にPC-FXGAからのデータを受けとる事
ができませんので pio_recvchk() 以外のＰＩＯ関数は使えません。


■２．３  ファイルへのデータの書き込み

《名称》
pio_fwrite

《形式》
#include <pio.h>
long pio_fwrite(int fh,long len,char *buf);

《パラメータ》
fh            : 書き込みたいファイルのファイル番号を指定します。
len           : 書き込むデータの長さを指定します。
buf           : 書き込むデータの先頭ポインタを指定します。

《解説》
長さ len のデータ buf を fh で指定されたファイルに書き込みます。
fh には、必ず pio_fopen() 関数から返されたファイル番号を指定して下さい。ファイ
ルは書き込み可モードでオープンされている必要があります。
len には、必ず１以上の長さを指定して下さい。

《戻り値》
書き込みに成功した場合、実際に書き込んだ長さを返します。ディスクフルが発生する
と、len で指定した長さよりも小さい値を返します。
書き込みに失敗（１バイトも書かれていない）した場合、負の数のエラーコードを返し
ます。


■２．４  ファイルからのデータの読み込み

《名称》
pio_fread

《形式》
#include <pio.h>
long pio_fread(int fh,long len,char *buf);

《パラメータ》
fh            : 読み込みたいファイルのファイル番号を指定します。
len           : 読み込むデータの長さを指定します。
buf           : データを読み込む領域の先頭ポインタを指定します。

《解説》
長さ len のデータを buf の領域へ fh で指定されたファイルから読み込みます。
fh には、必ず pio_fopen() 関数から返されたファイル番号を指定して下さい。
len には、必ず１以上の長さを指定して下さい。

《戻り値》
読み込みに成功した場合、実際に読み込んだ長さを返します。読み込み中にファイル終
端に達すると、len で指定した長さよりも小さい値を返します。
読み込みに失敗（１バイトも読まれていない）した場合、負の数のエラーコードを返し
ます。


■２．５  ファイルの読み込み／書き込み位置の移動

《名称》
pio_fseek

《形式》
#include <pio.h>
long pio_fseek(int fh,long pos,int from_where);

《パラメータ》
fh            : 位置を移動したいファイルのファイル番号を指定します。
pos           : 移動する位置を、ベースからの相対位置で指定します。
from_where    : 移動の基準となるベースを指定します。

《解説》
fh で指定したファイルの読み書き位置を from_where をベースとした pos で指定した
位置に移動します。
fh には、必ず pio_fopen() 関数から返されたファイル番号を指定して下さい。
pos には、ベースからの相対位置を指定します。移動したい位置がベースよりも前方に
（ファイルの先頭に近い方向に）ある場合は負の数を、ベースよりも後方に（ファイル
の末尾に近い方向に）ある場合は正の数を、ベースと同じ場合は 0 を指定します。
また、ファイルの先頭よりも前の位置、ファイルの末尾よりも後ろの位置には移動でき
ません。
from_where には、移動の基準となるベースを０、１、２で指定します。指定する数値
とベースの対応は以下のようになります。

−−−−−−−＋−−−−−−−−−−−−＋−−−−−−−−−−−−−−−−−−
  from_where  ｜ ベースの位置           ｜ 定義
−−−−−−−＋−−−−−−−−−−−−＋−−−−−−−−−−−−−−−−−−
      ０      ｜ ファイルの先頭         ｜ PIO_SEEK_SET
      １      ｜ 現在の読み書き開始位置 ｜ PIO_SEEK_CUR
      ２      ｜ ファイルの終端         ｜ PIO_SEEK_END
−−−−−−−＋−−−−−−−−−−−−＋−−−−−−−−−−−−−−−−−−

《戻り値》
移動に成功した場合、移動後の位置をファイル先頭からの絶対位置で返します。この時
に返される絶対位置は０以上の正の数（０を含む）になります。
移動に失敗した場合、負の数のエラーコードを返します。


■２．６  ファイルのオープン

《名称》
pio_fopen

《形式》
#include <pio.h>
int pio_fopen(char *file,char *mode);

《パラメータ》
file          : オープンしたいファイルのファイル名のポインタを指定します。
mode          : オープンするモードを示す文字列のポインタを指定します。

《解説》
file で指定されたファイルを mode で指定したモードに従ってオープンします。
file にはホストマシンのＭＳ−ＤＯＳ上で扱うファイルのファイル名を指定します。
ファイル名には、"C:\\FXGA\\TESTFILE.DAT" のように、ドライブ名、パス名を含める
事ができます。(Ｃ言語では、文字列の中に'\'記号を入れる場合は \\ と表記します)

mode には、読み込み、書き込み、更新の為の書き込み、追加の為の書き込み、新規作
成の書き込みを示す文字列を指定します。指定する文字列とオープンモードの対応は下
記のようになります。
−−−＋−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
 mode ｜オープンモード
−−−＋−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
  r   ｜読み込み専用にオープンします。書き込みはできません。ファイルが存在し
      ｜ない場合はエラーになります。
−−−＋−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
  w   ｜新規書き込みの為にオープンします。読み込みはできません。ファイルが既
      ｜存の場合は既存ファイルの内容は捨てられます。
−−−＋−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
  a   ｜追加書き込みの為にオープンします。読み込みはできません。ファイルが既
      ｜存の場合はオープン直後に書き込み位置をファイル終端に移動します。ファ
      ｜イルが存在しない場合は新規書き込みと同様にファイルを新規作成します。
−−−＋−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
 r+   ｜既存のファイルを更新用にオープンします。読み込みと書き込みの両方が可
      ｜能です。ファイルが存在しない場合はエラーになります。
−−−＋−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
 w+   ｜新規書き込みの為にオープンします。ファイルが既存の場合は既存ファイル
      ｜の内容は捨てられます。
−−−＋−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
 a+   ｜追加書き込みの為にオープンします。ファイルが既存の場合はオープン直後
      ｜に書き込み位置をファイル終端に移動します。ファイルが存在しない場合は
      ｜新規書き込みと同様にファイルを新規作成します。
−−−＋−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

《戻り値》
オープンに成功した場合、ファイル番号を返します。
オープンに失敗した場合、負の数のエラーコードを返します。


■２．７  ファイルのクローズ

《名称》
pio_fclose

《形式》
#include <pio.h>
void pio_fclose(int fh);

《パラメータ》
fh            : クローズしたいファイルのファイル番号を指定します。

《解説》
fh で指定したファイルをクローズして、ファイルの使用を終了します。
fh には、必ず pio_fopen() 関数から返されたファイル番号を指定して下さい。
ファイルの読み書きがすべて終了した場合は、必ずファイルをクローズして下さい。ク
ローズしなかった場合にはオープンしたままのファイルが他のプログラムから使用でき
なくなるばかりか、ファイルに書き込んだ内容が失われたり、ファイルそのものが失わ
れる場合があります。

《戻り値》
戻り値はありません。


■２．８  文字の画面表示

《名称》
pio_putchar

《形式》
#include <pio.h>
void pio_putchar(int c);

《パラメータ》
c             : 表示したい文字を指定します。

《解説》
文字 c をホストマシンの画面に表示します。
改行したい場合は、'\r'(0DH)と '\n'(0AH)の２文字を続けて表示する必要があります。

《戻り値》
戻り値はありません。


■２．９  文字列の画面表示

《名称》
pio_putstr

《形式》
#include <pio.h>
void pio_putstr(char *str);

《パラメータ》
str           : 表示したい文字列のポインタを指定します。

《解説》
文字列 str をホストマシンの画面に表示します。
strに指定した文字列の終端記号 '\0'（00H）は表示されません。
改行したい場合は、文字列の中に "\r\n"（0DH,0AH）の２文字を入れて表示する必要が
あります。

《戻り値》
戻り値はありません。


■２．10  キー入力

《名称》
pio_getchar

《形式》#include <pio.h>
int pio_getchar(void);

《パラメータ》
パラメータはありません。

《解説》
ホストマシンのキーボードを用いて、１文字キー入力します。ホストマシンのキーボー
ドの何かのキーを押すまで、関数から復帰しません。
CTRL+B , CTRL+C（CTRLキーを押しながら B 、CTRLキーを押しながら C）は入力できま
せん。

《戻り値》
ホストマシンのキーボードで入力した文字を返します。
CTRL+B と CTRL+C は入力できませんので、02H と 03H は返りません。


■２．11  ホストマシンで発生したエラーコードの取得

《名称》
pio_geterror

《形式》
#include <pio.h>
int pio_geterror(void);

《パラメータ》
パラメータはありません。

《解説》
ホストマシンで発生したエラーのエラーコードを取得します。
ＰＩＯライブラリを使用している際には、ホストマシンのＭＳ−ＤＯＳ上でエラーが発
生する場合があります。その際にＭＳ−ＤＯＳでどのようなエラーが発生したかを調べ
る事ができます。

《戻り値》
ホストマシンのエラーコードを返します。

返されるエラーコードは以下のようになります。
  エラー番号      意味
  ０１Ｈ          ファンクションコード、パラメータが無効
  ０２Ｈ          ファイルが見つからない
  ０３Ｈ          パス名が見つからない
  ０４Ｈ          これ以上ファイルをオープンできない
  ０５Ｈ          アクセスが拒否された
  ０６Ｈ          ファイル番号が無効
  ０７Ｈ          メモリブロックが壊れている
  ０８Ｈ          メモリが足りない
  ０９Ｈ          メモリブロックの指定が無効
  ０ＡＨ          ＭＳ−ＤＯＳの環境が無効
  ０ＢＨ          フォーマットが無効
  ０ＣＨ          アクセスコードが無効
  ０ＤＨ          データが無効
  ０ＥＨ          予約（未使用）
  ０ＦＨ          ドライブ名が無効
  １０Ｈ          カレントディレクトリは削除できない
  １１Ｈ          同一のデバイスではない
  １２Ｈ          これ以上ファイルがない
  １３Ｈ          ライトプロテクトされている
  １４Ｈ          不良ディスク
  １５Ｈ          ドライブの準備ができていない
  １６Ｈ          ディスクのコマンドが無効
  １７Ｈ          ＣＲＣエラー（不良セクタ）
  １８Ｈ          ディスクのデータ長が無効
  １９Ｈ          シークできない
  １ＡＨ          ＭＳ−ＤＯＳ以外のディスク
  １ＢＨ          セクタが見つからない
  １ＣＨ          用紙切れ
  １ＤＨ          書き込み失敗
  １ＥＨ          読み込み失敗
  １ＦＨ          その他の一般的な失敗
  ２０Ｈ          共有違反
  ２１Ｈ          ファイルがロックされている
  ２２Ｈ          不正ディスク
  ２３Ｈ          ＦＣＢが使用できない
  ２４Ｈ〜３１Ｈ  予約（未使用）
  ３２Ｈ          ネットワークがサポートされていない
  ３３Ｈ          リモートマシンが待機状態ではない
  ３４Ｈ          ネットワーク名が重複
  ３５Ｈ          ネットワーク名が見つからない
  ３６Ｈ          ネットワークが混雑している
  ３７Ｈ          ネットワークデバイスがこれ以上はない
  ３８Ｈ          ネットワークＢＩＯＳの限界
  ３９Ｈ          ネットワークのハードウェアエラー
  ３ＡＨ          ネットワークから不正に応答された
  ３ＢＨ          予期しないネットワークエラー
  ３ＣＨ          リモートアダプタの不正
  ３ＤＨ          印刷待ち行列の空きが無い
  ３ＥＨ          待ち行列に空きがある
  ３ＦＨ          印刷ファイルの空間が足りない
  ４０Ｈ          ネットワーク名が削除済み
  ４１Ｈ          アクセスできない
  ４２Ｈ          ネットワークデバイスタイプの不正
  ４３Ｈ          ネットワーク名が見つからない
  ４４Ｈ          ネットワーク名が限界を越えた
  ４５Ｈ          ネットワークＢＩＯＳの限界
  ４６Ｈ          一時休止している
  ４７Ｈ          ネットワーク要求の拒否
  ４８Ｈ          ディスクまたはプリンタのリダイレクトの休止
  ４９Ｈ〜４ＦＨ  予約（未使用）
  ５０Ｈ          既にファイルが存在する
  ５１Ｈ          予約（未使用）
  ５２Ｈ          作成できない
  ５３Ｈ          ＭＳ−ＤＯＳのＩＮＴ２４Ｈの失敗
  ５４Ｈ          ネットワークの構造が不正
  ５５Ｈ          既に割り当て済み
  ５６Ｈ          パスワードが無効
  ５７Ｈ          パラメータが無効
  ５８Ｈ          ネットワークへの書き込みの失敗
  ５９Ｈ          予約（未使用）
  ５ＡＨ          システム関連ファイルの未ロード
  ５ＢＨ〜        予約（未使用）

＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝

《著作権及び登録商標等》

・PIOLIB.A 及び PIOLIB.TXT（以下、"本ソフトウェア"という）は、ＰＣ−ＦＸＧＡ用
  のソフトウェア開発ツールの一部です。本ソフトウェアを、ＰＣ−ＦＸ、ＰＣ−ＦＸ
  ＧＡ用のソフトウェア開発以外の目的で使用しないで下さい。

・本ソフトウェアを使用した結果、直接及び間接的に生じた損害について、株式会社ハ
  ドソンは、一切の責任または債務を負わないものとします。

・本ソフトウェアの操作方法、技術的内容、その他の質問について、株式会社ハドソン
  では、直接お答えしていません。お問い合わせはご遠慮下さい。

・本ソフトウェアの使用に際し、「ソフトウェアのご使用条件」をよくご覧いただき、
  ご利用下さいますようお願い致します。

・本ソフトウェアの著作権は、株式会社ハドソンが保有しています。


MS-DOSは米国マイクロソフト社の登録商標です。
その他、記載されている会社名、製品名は、各社の登録商標または商標です。


                                                            (C)1995 HUDSON SOFT

